﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Text;
using System.Web.UI.WebControls;
using System.Threading;
using TMD.GT.Site.Util;
using TMD.GT.Entidades;
using TMD.GT.Site.Controladora;


namespace TMD.GT.Site.Vistas.AlineacionComponente
{
    public partial class Aprobar_Priorizar : System.Web.UI.Page
    {

        int iRegistCiclo = 0;
        int iUltimaEtapa = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                iUltimaEtapa = CicloAlineamientoControladora.ObtUltimaEtapa();
                
                //COMPONETES ESTAN EN: TERMINA SELECCION
                if (iUltimaEtapa <= 2)
                {
                    Thread.Sleep(1000);
                    gvPriorizar.Visible = true;
                    gvPriorizar.DataSource = ComponenteControladora.ListarComponentesPriori(new Componente { Codigo = "", Nombre = "", CodigoTipo = 0 });
                    gvPriorizar.DataBind();

                    btnTerEvaluacion.Enabled = false;
                    btnGuardar.Enabled = false;
                }


                //COMPONETES ESTAN EN: INICIA PRIORIZACION
                if (iUltimaEtapa == 3)
                {
                    Thread.Sleep(1000);
                    gvPriorizar.Visible = true;
                    gvPriorizar.DataSource = ComponenteControladora.ListarComponentesPriori(new Componente { Codigo = "", Nombre = "", CodigoTipo = 0 });
                    gvPriorizar.DataBind();
                    gvPriorizar.Enabled = true;
                    
                    btnTerEvaluacion.Enabled = true;
                    btnGuardar.Enabled = true;
                    btnIniciar.Enabled = false;

                    
                }

                gvPriorizar.Columns[8].Visible = false;
                gvPriorizar.Columns[9].Visible = false;


                
                //COMPONETES ESTAN EN: TERMINA PRIORIZACION
                if (iUltimaEtapa == 4)
                {
                    Thread.Sleep(1000);
                    gvPriorizar.Visible = true;
                    gvPriorizar.Columns[8].Visible = true;
                    gvPriorizar.Columns[9].Visible = true;
                    gvPriorizar.DataSource = ComponenteControladora.ListarComponentesPriori(new Componente { Codigo = "", Nombre = "", CodigoTipo = 0 });
                    gvPriorizar.DataBind();
                    gvPriorizar.Enabled = true;

                    gvPriorizar.Columns[7].Visible = false;
                    gvPriorizar.Columns[8].Visible = true;
                    gvPriorizar.Columns[9].Visible = true;


                    btnTerEvaluacion.Enabled = true;
                    btnIniciar.Enabled = false;
                    
                
                }

                if (iUltimaEtapa > 4)
                {
                    gvPriorizar.Columns[7].Visible = false;
                    gvPriorizar.Columns[8].Visible = true;
                    gvPriorizar.Columns[9].Visible = true;

                    btnTerEvaluacion.Enabled = false;
                    btnIniciar.Enabled = false;
                    
                    btnGuardar.Enabled = false;
                }
            }

        }

        
        protected void btnIniciar_Click(object sender, EventArgs e)
        {
            int iUltimaEtapa = 0;
           


            iUltimaEtapa = CicloAlineamientoControladora.ObtUltimaEtapa();
            
            //------VERIFICAR SI YA SE TERMINO LA SELECCION
            if (iUltimaEtapa < 2) 
            {
                MensajeJavascript("Estimado usuario: No se podrá iniciar la etapa de aprobación mientras la alineación se encuentre en etapas previas.", "NoAprobacion");
            }
            else
            {
                iRegistCiclo = CicloAlineamientoControladora.InsertarCiclo(new CicloAlineamiento { CODIGO_CICLO_ALINEAMIENTO = 1, CODIGO_ETAPA = 3 });
                gvPriorizar.Enabled = true;

                btnIniciar.Enabled = false;
                btnTerEvaluacion.Enabled = true;
            }
            
        }

        protected void btnTerEvaluacion_Click(object sender, EventArgs e)
        {
            
            int validacion=0;
            int cuenta = 0;
            
            //-------------------------------------------------------------------------------------------------------------
            foreach (GridViewRow row in gvPriorizar.Rows)
            {
                TextBox txt = row.FindControl("txtPrioriza") as TextBox;
                if (string.IsNullOrEmpty(txt.Text) || txt.Text.Equals("0"))
                {
                    validacion = 1;
                    txt.Focus();
                    MensajeJavascript("Antes de terminar la priorización debe asignar un valor a todos los componentes", "Nulos");
                    break;
                }
            }
            

            if (validacion == 0){
                foreach (GridViewRow row in gvPriorizar.Rows)
                {
                    TextBox txt = row.FindControl("txtPrioriza") as TextBox;

                    foreach (GridViewRow row2 in gvPriorizar.Rows)
                    {
                        TextBox txt2 = row2.FindControl("txtPrioriza") as TextBox;
                    
                        if (txt2.Text.Equals(txt.Text))
                        {
                            cuenta += 1;
                        }
                    }
                }

                if (cuenta > gvPriorizar.Rows.Count)
                {
                    validacion = 1;
                    MensajeJavascript("Existen valores duplicados en la priorización", "Duplicados");
                }
            }


            //-------------------------------------------------------------------------------------------------------------

            if (validacion == 0)
            {
                foreach (GridViewRow row in gvPriorizar.Rows)
                {
                    TextBox txt = row.FindControl("txtPrioriza") as TextBox;
                    HiddenField hdd = row.FindControl("hddCod") as HiddenField;
                    ComponenteControladora.ActualizarPriorizacion(hdd.Value.ToString() ,Convert.ToInt32(txt.Text));
                }

                gvPriorizar.Columns[8].Visible = true;
                gvPriorizar.Columns[9].Visible = true;
                gvPriorizar.DataSource = ComponenteControladora.ListarComponentesPriori(new Componente { Codigo = "", Nombre = "", CodigoTipo = 0 });
                gvPriorizar.DataBind();

                gvPriorizar.Columns[7].Visible = false;
                gvPriorizar.Columns[8].Visible = true;
                gvPriorizar.Columns[9].Visible = true;


                iRegistCiclo = CicloAlineamientoControladora.InsertarCiclo(new CicloAlineamiento { CODIGO_CICLO_ALINEAMIENTO = 1, CODIGO_ETAPA = 4 });

                btnTerEvaluacion.Enabled = false;
                btnIniciar.Enabled = false;
                

            }


        }


        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gvPriorizar.Rows)
            {
                TextBox txt = row.FindControl("txtPrioriza") as TextBox;
                HiddenField hdd = row.FindControl("hddCod") as HiddenField;
                ComponenteControladora.ActualizarPriorizacion(hdd.Value.ToString(), string.IsNullOrEmpty(txt.Text) ? 0 : Convert.ToInt32(txt.Text));
            }
        }



        protected void btnTerAprobacion_Click(object sender, EventArgs e)
        {

            //antes de insertar se debe validar que todos los componentes hayan pasado por la 
            //evalucion de riesgos
            //iRegistCiclo = CicloAlineamientoControladora.InsertarCiclo(new CicloAlineamiento { CODIGO_CICLO_ALINEAMIENTO = 1, CODIGO_ETAPA = 5 });

        }
       

        public void MensajeJavascript(string _Mensaje, string _NombreFuncion)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("alert('" + _Mensaje + "');");
            ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), _NombreFuncion, Convert.ToString(sb), true);
        }




        

    }
}